• 全局环境变量对于shell会话和所有生成的子shell都是可见的,局部环境变量则只对创建他们的shell可见,系统环境变量基本上都是使用全大写字母,以区别于普通用户的环境变量。
  • 要查看环境变量,可以使用env命令或者printenv命令,要显示个别环境变量的值可以使用printenv命令,例如printenv HOME,也可以使用echo来显示环境变量的值,但是必须在变量前面加上$符号,例如echo $HOME
  • set命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户自定义变量
  • 设置用户自定义环境变量:通过等号给环境变量赋值,值可以是数值或字符串,例如:my_variable=hello,如果要给变量赋一个含有空格的字符串值,必须用单引号来界定字符串的首和尾。需要注意的是变量名、等号和值之间是没有空格的。
  • 创建全局环境变量:先创建一个局部环境变量,然后再把它导出到全局环境中,这个过程使用export命令来完成,变量名前不要加$,例如:my_variabel="I am global now"; export my_variable; echo $my_variable;
  • 在定义并导出环境变量后,启动一个子shell,此时在子shell中修改这个变量的值,这种改变只会在当前子shell中生效,不会反映到父shell中,子shell甚至无法使用export命令改变父shell中全局变量的值。
  • 可以使用unset命令来删除环境变量,在unset命令中引用环境变量时不要使用$,例如:unset my_variable
  • 在环境变量操作时,需要用到变量,使用$,如果要操作变量,不使用$
  • 如果你在子进程中删除了一个全局环境变量,这只对子进程有效,该全局变量在父进程中依然可用
  • /etc/profile文件是系统默认的bash shell的主启动文件,系统上的每个用户登录时都会执行这个启动文件,每个发行版的/etc/profile文件都有不同的设置和命令
  • $HOME目录下的启动文件:

    • $HOME/.bash_profile
    • $HOME/.bashrc
    • $HOME/.bash_login
    • $HOME/.profile

    这些文件都有一个作用就是提供一个用户专属的启动文件来定义该用户所用到的环境变量,大多数Linux发行版只用到这个4个启动文件中的一个或两个,每个用户都可以编辑这些文件并添加自己的环境变量,这些环境变量会在启动bash shell会话时生效。

  • 数组是能够存储多个值的变量,这些值可以单独使用,也可以作为整个数组来引用,要给某个环境变量设置多个值,可以把值放在括号里,值和值之间用空格分隔:mytest=(one two three four five),如果你使用下面的方式来使用数组,那么得到的结果就是数组的第一个元素:echo $mytest要引用一个单独的数组元素,就必须用代表它在数组中位置的数组索引值,索引值用方括号括起来,并且索引值从0开始,例如:echo ${mytest[2]}要想显示整个数组变量,可用星号(*)作为通配符放在索引值的位置:echo ${mytest[*]}